/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package br.inf.ufg.model;

import br.inf.ufg.factory.ConexaoFactoryMySql;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 *
 * @author AUGUSTO
 */
public class OperadoresDAO {
    
    
    private final Connection con;
    private final Statement stmt;
    private final Statement stmtNavegar;
    private ResultSet rsNavegar;
    
    
     public OperadoresDAO() throws ClassNotFoundException, SQLException{        
         
             con = ConexaoFactoryMySql.getConnection();
             stmt = con.createStatement();
             stmtNavegar = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE,
                     ResultSet.CONCUR_UPDATABLE );
             rsNavegar = stmtNavegar.executeQuery( "SELECT * FROM operadores" );
    
    }
     
     
     public Operadores primeiro() throws SQLException 
    {
        if (rsNavegar.first() ) 
        {            
            Operadores operadores = new Operadores();
            
            operadores.setIdOperador(rsNavegar.getInt( "IDOPERADOR" ) );
            operadores.setMatricula(rsNavegar.getString( "MATRICULA" ) );
            operadores.setPonto(rsNavegar.getString("PONTO"));
            operadores.setNome(rsNavegar.getString("NOME"));
            
            operadores.setLogin(rsNavegar.getString("LOGIN"));
            operadores.setSenha(rsNavegar.getString("SENHA"));
            operadores.setIsAtivo(rsNavegar.getInt("IS_ATIVO"));
            operadores.setIsGerente( rsNavegar.getInt("IS_GERENTE"));

            return operadores;

        }
        else 
        {
            return null;
        }
        
    }
     
     public Operadores anterior() throws SQLException 
    {
        if (rsNavegar.previous()) 
        {            
            Operadores operadores = new Operadores();
            
            operadores.setIdOperador(rsNavegar.getInt( "IDOPERADOR" ) );
            operadores.setMatricula(rsNavegar.getString( "MATRICULA" ) );
            operadores.setPonto(rsNavegar.getString("PONTO"));
            operadores.setNome(rsNavegar.getString("NOME"));
            
            operadores.setLogin(rsNavegar.getString("LOGIN"));
            operadores.setSenha(rsNavegar.getString("SENHA"));
            operadores.setIsAtivo(rsNavegar.getInt("IS_ATIVO"));
            operadores.setIsGerente( rsNavegar.getInt("IS_GERENTE"));

            return operadores;

        }
        else 
        {
            return null;
        }
        
    }
     
     public Operadores proximo() throws SQLException 
    {
        if (rsNavegar.next() ) 
        {            
            Operadores operadores = new Operadores();
            
            operadores.setIdOperador(rsNavegar.getInt( "IDOPERADOR" ) );
            operadores.setMatricula(rsNavegar.getString( "MATRICULA" ) );
            operadores.setPonto(rsNavegar.getString("PONTO"));
            operadores.setNome(rsNavegar.getString("NOME"));
            
            operadores.setLogin(rsNavegar.getString("LOGIN"));
            operadores.setSenha(rsNavegar.getString("SENHA"));
            operadores.setIsAtivo(rsNavegar.getInt("IS_ATIVO"));
            operadores.setIsGerente( rsNavegar.getInt("IS_GERENTE"));

            return operadores;

        }
        else 
        {
            return null;
        }
        
    }
     
     public Operadores ultimo() throws SQLException 
    {
        if (rsNavegar.last() ) 
        {            
            Operadores operadores = new Operadores();
            
            operadores.setIdOperador(rsNavegar.getInt( "IDOPERADOR" ) );
            operadores.setMatricula(rsNavegar.getString( "MATRICULA" ) );
            operadores.setPonto(rsNavegar.getString("PONTO"));
            operadores.setNome(rsNavegar.getString("NOME"));
            
            operadores.setLogin(rsNavegar.getString("LOGIN"));
            operadores.setSenha(rsNavegar.getString("SENHA"));
            operadores.setIsAtivo(rsNavegar.getInt("IS_ATIVO"));
            operadores.setIsGerente(rsNavegar.getInt("IS_GERENTE"));

            return operadores;

        }
        else 
        {
            return null;
        }
        
    }
     
       public boolean excluirRegistro( Operadores operadores ) throws SQLException 
      {
            int codOperador = operadores.getIdOperador(); 
          
            stmt.executeUpdate( "DELETE FROM operadores WHERE IDOPERADOR = " + codOperador );
            rsNavegar = stmtNavegar.executeQuery( "SELECT * FROM operadores" );
            return true;        
      }
    
       // # salva um novo registro de ponto de vendas na base de dados 
      public boolean salvarRegistro( Operadores operadores ) throws SQLException, Exception
      {    
            
          // # resgatar os valores das variaveis 
          
          String matricula      = operadores.getMatricula(); 
          String ponto           = operadores.getPonto();
          String nome           = operadores.getNome(); 
          String login          = operadores.getLogin(); 
          String senha          = operadores.getSenha(); 
          int status            = operadores.getIsAtivo();
          int gerente           = operadores.getIsGerente();
          
            try  
            {
                // # SQL de insercao 
                
                String SQL = "INSERT INTO `operadores` (`MATRICULA`,`PONTO`,`NOME`,`LOGIN`,`SENHA`,`IS_ATIVO`,`IS_GERENTE`) "
                        + " VALUES ('"+matricula+"', '"+ponto+"', '"+nome+"', '"+login+"', '"+senha+"', '"+status+"', '"+gerente+"')";
                        
                stmt.executeUpdate( SQL );
                rsNavegar = stmtNavegar.executeQuery( "SELECT * FROM `operadores`" );
                
                return true;
            }
            catch ( SQLException e) 
            {
                throw new Exception("Erro ao inserir dados. Tente novamente " + e.getMessage());
 
            }
          
      }
      
      
      public boolean atualizarRegistro( Operadores operadores ) throws SQLException, Exception
      {    
            
          // # resgatar os valores das variaveis 
          int idOperador        = operadores.getIdOperador();
          String matricula      = operadores.getMatricula(); 
          String ponto          = operadores.getPonto();
          String nome           = operadores.getNome(); 
          String login          = operadores.getLogin(); 
          String senha          = operadores.getSenha(); 
          int status            = operadores.getIsAtivo();
          int gerente           = operadores.getIsGerente();
          
            try  
            {
                // # SQL de insercao 
                
                String SQL = "UPDATE `operadores` SET MATRICULA = '"+matricula+"', PONTO = '"+ponto+"', "
                        + "NOME = '"+nome+"', LOGIN = '"+login+"', SENHA = '"+senha+"', IS_ATIVO = '"+status+"', IS_GERENTE = '"+gerente+"' WHERE IDOPERADOR = '"+idOperador+"' ";
                        
                stmt.executeUpdate( SQL );
                rsNavegar = stmtNavegar.executeQuery( "SELECT * FROM `operadores`" );
                
                return true;
            }
            catch ( SQLException e) 
            {
                throw new Exception("Erro ao atualizar dados. Tente novamente " + e.getMessage());

            }
          
      }
      
      public Operadores pesquisarOperadores(String param) throws SQLException 
    {
        
        ResultSet rs = stmt.executeQuery( "SELECT * FROM operadores WHERE LOGIN LIKE '%"+param+"%'" );
        if (rs.next() ) 
        {            
            Operadores operadores = new Operadores();
            
            operadores.setIdOperador(rsNavegar.getInt( "IDOPERADOR" ) );
            operadores.setMatricula(rsNavegar.getString( "MATRICULA" ) );
            operadores.setPonto(rsNavegar.getString("PONTO"));
            operadores.setNome(rsNavegar.getString("NOME"));
            
            operadores.setLogin(rsNavegar.getString("LOGIN"));
            operadores.setSenha(rsNavegar.getString("SENHA"));
            operadores.setIsAtivo(rsNavegar.getInt("IS_ATIVO"));
            operadores.setIsGerente(rsNavegar.getInt("IS_GERENTE"));

            return operadores;

        }
        else 
        {
            return null;
        }
        
    }
     
     public Operadores getOperadores(int codigo) throws SQLException 
    {
        
        ResultSet rs = stmt.executeQuery( "SELECT * FROM operadores WHERE IDOPERADOR = "+codigo );
        if (rs.next() ) 
        {            
            Operadores operadores = new Operadores();
            
            operadores.setIdOperador(rsNavegar.getInt( "IDOPERADOR" ) );
            operadores.setMatricula(rsNavegar.getString( "MATRICULA" ) );
            operadores.setPonto(rsNavegar.getString("PONTO"));
            operadores.setNome(rsNavegar.getString("NOME"));
            
            operadores.setLogin(rsNavegar.getString("LOGIN"));
            operadores.setSenha(rsNavegar.getString("SENHA"));
            operadores.setIsAtivo(rsNavegar.getInt("IS_ATIVO"));
            operadores.setIsGerente(rsNavegar.getInt("IS_GERENTE"));

            return operadores;

        }
        else 
        {
            return null;
        }
        
    } 
      
}

